package com.crm.customers.service;

import java.util.List;
import java.util.Map;

import com.crm.customers.model.ContractMoneylog;

public interface ContractMoneylogService {
	
	/**
	 * 插入收付款记录
	 * */
	public int insertMoneyLog(ContractMoneylog cml) throws Exception;
	
	/**
	 * 查询收付款记录列表
	 * @param cml
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	public List<ContractMoneylog> getContractMoneylogList(ContractMoneylog cml , Integer pageNo , Integer pageSize);
	
	/**
	 * 收付款记录详情
	 * @param cml
	 * @return
	 */
	public ContractMoneylog getContractMoneylogInfo(ContractMoneylog cml);
	
	/**
	 * 查询没有绑定合同的垫款记录
	 * @param cml
	 * @return
	 */
	public List<ContractMoneylog> getContractMoneylogInfoByContract(ContractMoneylog cml);
	/**
	 * 修改收付款项审批状态
	 * @param cml
	 * @return
	 */
	public int updateContractMoneylogApproveState(ContractMoneylog cml);
	/**
	 * 修改收付款项记录
	 * @param cml
	 * @return
	 */
	public int updateContractMoneylog(ContractMoneylog cml);
	
	/**
	 * 查询某位用户正在审批的垫款条数
	 * */
	public int selectLogCountByParams(ContractMoneylog cml);
	  /**
     * 取得签单总额
     * @param cml
     * @return
     */
    int selectTotalMoney(ContractMoneylog cml);
    
    /**
     * 搜索银行关键字
     * */
    public List<ContractMoneylog> selectBnakName(ContractMoneylog cml);
    
    /**
     * 删除合同时更新合同中垫付类型用户的合同id为0
     * */
    public int updateContractid(ContractMoneylog cml); 
    
    /**
     * 
     * */
    public int selectskcount(ContractMoneylog cml);
    
    /**
     * 根据条件获取垫款列表
     * */
    public List<ContractMoneylog> getDKlistByParams(ContractMoneylog cml,int pageNo,int pageSize);
    
    /**
     * 根据条件获取垫款/收款/付款记录条数
     * */
    public int getcmlcountbytype(ContractMoneylog cml);
    
    /**
     * 根据条件获取垫款/收款/付款总钱数
     * */
    public Integer getcmlcountbycreatedate(ContractMoneylog cml);
    
    /**
     * 根据条件清除或绑定垫款
     * */
    public Integer addOrCleanAdvanceMoneyLog(ContractMoneylog cml,int type);
    
    
    
    
    
    
    
}
